home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / comm / tcp / GetURL_1_03.lha / GetURL-1.03.doc next >
Text File  |  1995-02-01  |  30KB  |  747 lines

  1. {========================================================================}
  2. {   File Name : 'GetURL.doc',  21-Jan-95                                 }
  3. {========================================================================}
  4.  
  5.     -- Script to download HTML systems across the network --
  6.  
  7. {========================================================================}
  8. {   Contents                                                             }
  9. {========================================================================}
  10.  
  11. 1.  Introduction
  12. 2.  Installation
  13. 3.  Use
  14.         3.1.    Basic Use
  15.         3.2.    Options
  16.         3.3.    Help & Setup Options
  17.         3.4.    Control Options
  18.         3.5.    Restriction Options
  19.         3.6.    Input & Output Options
  20. 4.  I Robot
  21. 5.  Examples
  22. 6.  Match
  23. 7.  New Versions
  24. 8.  Known Bugs & Problems
  25. 9.  Glossary
  26. 10. Changes
  27. 11. Credits
  28. 12. Contact
  29.  
  30. {========================================================================}
  31. {   Introduction                                                         }
  32. {========================================================================}
  33.  
  34.     GetURL.rexx is an ARexx script which will download World-Wide Web pages.
  35.     With a simple command line it will download a specific page, and with
  36.     more complex command lines it will be able to download specific sets of
  37.     documents including many pages.
  38.     
  39.     The intention was to create a tool that allowed local cacheing of important
  40.     web pages and a flexible way of specifying what pages are important. The
  41.     script has no GUI as of yet but may have at some stage in the future.
  42.     
  43.     If you have ever tried to download and save to disc a 200 page document
  44.     using Mosaic, then you know what this script is for. Mosaic will only
  45.     let you load a page, then load it to disc, then load another page etc.
  46.     This is a very frustrating process. GetURL automates this process and
  47.     will run in batch mode without user intervention.
  48.     
  49.     The major features of GetURL.rexx are as follows:
  50.     
  51.     * doesn't require AMosaic, so you can be browsing something else
  52.         with AMosaic whilst this is running
  53.         
  54.     * save pages to your hard disc so that they can be read offline and
  55.         you can also give them to friends on a floppy disc. Who know, 
  56.         you may even be able to sell discs containing web pages :-)
  57.  
  58.     * flexible set of command line switches that allow you to restrict the 
  59.         type of pages that it downloads
  60.     
  61.     * ability to specify files for the lists of URLs that it keeps so
  62.         that any search for pages can be stopped and restarted at a later
  63.         date. i.e. you could run GetURL for 2 hours a day whilst you are
  64.         online and gradually download everything in the entire universe
  65.         and it won't repeat itself.
  66.         
  67.     * includes the ability to download itself when there are new versions.
  68.     
  69.     * will use a proxy if you have access to one, in order to both speed up
  70.         access to pages and also to reduce network load.
  71.         
  72.     * will download binary files (*.gif, *.lha) as easily as text and html
  73.         files.
  74.         
  75.     * documentation is in the top of the script file.
  76.  
  77. {========================================================================}
  78. {   Installation                                                         }
  79. {========================================================================}
  80.  
  81.     Just copy the file GetURL.rexx to your REXX: directory
  82.     
  83.     You should also add an assign Mosaic:
  84.     
  85.     e.g.
  86.     assign Mosaic: PD:Mosaic/
  87.     
  88. TimeZone
  89. ========
  90.  
  91.     If you want to use the -IfModified flag (which is **VERY** useful)
  92.     then you should also configure the TimeZone.
  93.     Use a normal text editor, find the line which looks like
  94.     
  95.     gv.timezone = ''
  96.     
  97.     and enter your TimeZone expressed as a difference to Greenwich Mean Time
  98.     (England Time) e.g. I am in Melbourne so my TimeZone is GMT+1100
  99.     so I put
  100.     
  101.     gv.timezone = '+1100'
  102.     
  103.     If I was in Adelaide I would be in teh TimeZone GMT+1030
  104.     
  105.     gv.timezone = '+1030'
  106.     
  107.     Note: Anywhere in the USA is going to be GMT-???? so make sure
  108.     you get it right. 
  109.     - If you are in England then put +0000
  110.     - Don't put symbols like EST or whatever, put it numerically.
  111.     
  112. Match
  113. =====
  114.     Although not necessary, GetURL will perform better in the presence
  115.     of 'Match', 'rexxarplib.library'
  116.     
  117.     Match should be in your search path. The simplest way to do this is
  118.     to copy it to your C: directory
  119.     
  120.     RexxArpLib.library is available somewhere on AmiNet
  121.  
  122. {========================================================================}
  123. {   Use                                                                  }
  124. {========================================================================}
  125.          
  126. Basic Use
  127. =========
  128.  
  129.     The basic use of GetURL is to download a single page from the World-Wide 
  130.     Web. This can be achieved by doing
  131.     
  132.     rx geturl http://www.cs.latrobe.edu.au/~burton/
  133.     
  134.     This will download the page specified by the URL into an appropriately 
  135.     named file. For this example the file will be called 
  136.  
  137.     Mosaic:www.cs.latrobe.edu.au/~burton/index.html
  138.     
  139.     The required directories will be created by GetURL if necessary.
  140.     
  141. Options
  142. =======
  143.  
  144.     GetURL has many command line options which allow you to do much
  145.     more interesting things. The following is a discussion of each 
  146.     option individually. The names of the options can all be abbreviated
  147.     but this may be unwise as you may be specifying a different option
  148.     than you think.
  149.           
  150. Help & Setup Options
  151. ====================
  152.  
  153. -Help
  154.     e.g.
  155.     rx geturl -help
  156.     
  157.     Prints a summary of all the options
  158.  
  159. -Problem 
  160.     e.g.
  161.     rx geturl -problem
  162.     
  163.     Allows a bug report or gripe or problem to be entered in from
  164.     the CLI.
  165.  
  166. -NewVersion <file> 
  167.     rx geturl -newversion t:geturl.rexx
  168.     
  169.     Downloads a new version of GetURL from my university account (assuming
  170.     the university link hasn't gone down or something). Don't save the new
  171.     copy over the old copy until you know it has been downloaded properly.
  172.  
  173. -PatternMatching
  174.     
  175.     Downloads 'Match' from my university account. Match allows GetURL to use
  176.     pattern matching in the restriction options (see the section on Match below)      
  177.     
  178. -Associative
  179.  
  180.     uses a different scheme to keep lists of URL addresses which is quite a bit 
  181.     faster
  182.     
  183. -Delay
  184.  
  185.     set the delay between loading pages in seconds (defaults to 2 seconds)
  186.           
  187. Control Options
  188. ===============
  189.  
  190. -Recursive
  191.  
  192.     This causes GetURL to search each downloaded file for URLs and to then
  193.     fetch each one of these pages and search those. As you can guess this
  194.     will fill up your hard disc downloading every page on the planet (and
  195.     several off the planet also). In fact this is what is called a Web Robot
  196.     and should be used with due caution. Press control-c when you have had 
  197.     enough. GetURL will finish only when it's list of unvisited URLs is empty.
  198.  
  199. -NoProxy    
  200.  
  201.     Normally GetURL will try to use a proxy server if you have one set up.
  202.     You can set up a proxy server by adding something like the following to
  203.     your startnet script.
  204.     
  205.     setenv WWW_HTTP_GATEWAY http://www.mira.net.au:80/
  206.     setenv WWW_FTP_GATEWAY  http://www.mira.net.au:80/
  207.     
  208.     Where 'www.mira.net.au' is replaced by your local proxy host and '80'
  209.     is replaced by the port number to which the proxy is connected. Proxies
  210.     are normally connected to port 80.
  211.     
  212.     The NoProxy option causes GetURL to talk directly to the host in the URL
  213.     rather than asking the proxy to do so. This should only be necessary if
  214.     your proxy host isn't working properly at the moment.
  215.  
  216. -NoProxyCache   
  217.  
  218.     Asks the proxy host to refresh it's cache if necessary. Whether the
  219.     proxy host takes any notice of this flag or not it it's problem.
  220.  
  221. -Retry
  222.  
  223.     GetURL keeps a list of URLs that it couldn't access. If this flag is set,
  224.     when no further URLs are available to visit, GetURL will make another
  225.     attempt to fetch each of the pages that failed before.
  226.  
  227. Restriction Options
  228. ===================
  229.  
  230.     The behaviour of each of these options depends on whether you have
  231.     'Match' installed or not. (see the section on match below)
  232.     Note: pattern are not case sensitive.
  233.  
  234. -Host <pattern>    
  235.     
  236.     Allows you to specify or restrict URLs to certain hosts.
  237.     e.g.
  238.     
  239.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -host #?.au
  240.     
  241.     This will try to download any URLs connected to my home page that
  242.     are in the Australian domain '.au'
  243.     
  244.     The pattern following '-host' can be any AmigaDOS filename pattern.
  245.     See the DOS Manual for a full description of these patterns but just 
  246.     quickly here are a few examples
  247.     
  248.     #?      - means 'any sequence of characters'
  249.     (a|b)   - means 'either option a or option b'
  250.     ?       - means 'any single character'
  251.     ~a      - means 'any string that does not match a'
  252.     
  253.     More specifically
  254.     
  255.     -host #?.au   - means 'any host name ending in .au'
  256.     -host (info.cern.ch|www.w3.org) - means 'either info.cern.ch or www.w3.org'
  257.  
  258. -Path <pattern>   
  259.  
  260.     This works in the same manner as the -Host option except that you are
  261.     describing the pathname component of the URL
  262.     
  263.     e.g.
  264.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -recursive -path ~burton/NetBSD/#?
  265.     
  266.     This will try to download the NetBSD documentation from my university
  267.     account.
  268.     
  269.     Note: don't start the path with a leading '/' character as a '/' is
  270.     automatically inserted between the host and path parts of the URL
  271.     
  272.     e.g. 
  273.     rx geturl http://ftp.wustl.edu/ -recursive -path pub/aminet/#?
  274.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -path #?.(gif|jpg|xbm)
  275.  
  276. -URL <pattern>
  277.  
  278.     This works in the same manner as the -Host option except that you are
  279.     describing the whole URL
  280.     
  281.     e.g.
  282.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -recursive -url http://www.cs.latrobe.edu.au/~burton/#?
  283.  
  284. -Number <num>    
  285.  
  286.     Will only download <num> files across the network (not including the initial
  287.     URL supplied on the command line)
  288.     
  289.     e.g.
  290.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -recursive -number 5
  291.     
  292.     This will download my home page and 5 other pages which are mentioned
  293.     in it.
  294.     
  295. -Length <num>
  296.  
  297.     Will only download a file across the network if it is smaller than
  298.     <num> bytes
  299.     
  300. -IfModified
  301.  
  302.     Will only download a file across the network if it is newer than the
  303.     file in the cache. If there is no appropriately named file in the cache
  304.     directory then the file will be downloaded anyway.
  305.     
  306. -Depth <num>
  307.  
  308.     Will only download files across the network until a recursion depth of
  309.     <num> is reached. The first time a page is analyzed for URLs that page
  310.     has depth 0, the URLs found in it have depth 1. The URLs found in pages
  311.     of depth 1 have depth 2 and so on. This gradually develops into a tree
  312.     of Web pages, with the initial URL as the root (level 0) each URL found
  313.     in the root page hanging from the root (level 1) and the contents of their
  314.     pages hanging from them. This option allows GetURL to stop at the desired 
  315.     depth of the tree.
  316.  
  317. Without Match
  318.  
  319.     The documentation above assumes that Match is installed. If match
  320.     is not installed then AmigaDOS patterns will not work. Instead you
  321.     can use the '*' character as a place holder.
  322.     
  323.     e.g.
  324.     -host *.cs.latrobe.edu.au             
  325.         - meaning 'any host in the cs.latrobe.edu.au domain'
  326.     -path */index.html                                    
  327.         - meaning 'a file index.html in any single level directory'
  328.     -url  http://www.cs.*.edu/*/index.html
  329.         - meaning 'a file called index.html in a single level directory on 
  330.             any WWW host in any U.S. university'
  331.  
  332. Input & Output Options
  333. ======================
  334.  
  335. -Input <filename>
  336.  
  337.     Usually GetURL will start by downloading a page from the web and
  338.     save it. This option allows you to specify a file on your hard
  339.     disc to start with.
  340.     
  341.     e.g. assuming t:temp.html contains a list of URLs to search
  342.     rx geturl -input t:temp.html -r
  343.     
  344.     This will search recursively starting with the specified file
  345.  
  346. -Output <filename> 
  347.  
  348.     Instead of saving the downloaded files into sensibly named files
  349.     under Mosaic: this option allows you to append the material downloaded
  350.     into a single file.
  351.     
  352.     Mostly useful for downloading a single file.
  353.     
  354.     e.g.
  355.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -output James.html
  356.  
  357. -SaveRoot <dir>  
  358.  
  359.     If you don't want the downloaded files to be saved under Mosaic:
  360.     you can redirect them to another directory with this command
  361.     
  362.     e.g.
  363.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -saveroot tmp:cache
  364.  
  365. -Visited <file>
  366.  
  367.     GetURL keeps a list of URLs that have already been visited. This    
  368.     allows GetURL to stop itself repeating by checking each new URL
  369.     against the contents of the list of visted URLs. If you specify a file
  370.     (it may or may not exist previously) with this option - that file will
  371.     be used to check new URLs and to save URLs that have just been visited.
  372.     
  373.     e.g.
  374.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -visited tmp:Visited.grl
  375.  
  376. -UnVisited <file>  use specified unvisited file, visit these URLs first
  377.  
  378.     Normally GetURL will be used to download a starting file, search it for 
  379.     URLs and then visit each URL found in turn searching each of those files
  380.     for further URLs. Each time GetURL finds a new URL it will append it to 
  381.     a file so that it can come back later and download that page. This option
  382.     can be used to specify a file (it may or may not previously exist) which
  383.     will be used for this purpose. If there are already URLs in the specified 
  384.     file these will be visited before any new URLs which are found.
  385.  
  386. -Failed <file> 
  387.  
  388.     When for some reason GetURL fails to download a file, the URL of that file
  389.     is added to a list. This option causes GetURL to use the file specified
  390.     (it may or may not exist previously) to store that list.
  391.     
  392. -SaveHeaders
  393.  
  394.     When a file is retrieved using the HTTP protocol, the file is accompanied
  395.     by a header, rather like an email message. This option causes GetURL to
  396.     keep the header in a suitably named file.
  397.     
  398.     e.g.
  399.     rx geturl http://www.cs.latrobe.edu.au/~burton/ -saveheaders
  400.     will save 2 files
  401.     Mosaic:www.cs.latrobe.edu.au/~burton/index.html
  402.     Mosaic:www.cs.latrobe.edu.au/~burton/index.html.HDR
  403.     
  404. {========================================================================}
  405. {   I Robot                                                              }
  406. {========================================================================}
  407.                 
  408. The Problems with Robot
  409. =======================
  410.  
  411.     GetURL is considered a 'robot' web client. This is because it can 
  412.     automatically download an indeterminate number of pages or files over 
  413.     the network. That is what a robot is. The power of a robot can be 
  414.     abused very easily, far more easily than it can be used for reasonable
  415.     purposes. We all hate what has come to be called 'spamming' by commercial
  416.     entities on the 'net', but abuse of a robot is no different. Indiscriminate
  417.     robot use can make an entire network utterly useless for the period
  418.     during which the program is run (possibly for a great deal longer).
  419.     It is possible for a robot program to download hundreds of pages per
  420.     minute. In order to help people make the best use of GetURL without
  421.     overloading network resources and without annoying system administrators
  422.     worldwide, GetURL has some builtin rules for containing the behaviour
  423.     of the robot.
  424.     
  425. Rules for Containing the Robot
  426. ==============================
  427.  
  428.     Once the robot has started off exploring the Web, it is important that
  429.     it be restrained. There are two sorts of restraints in effect. Ones
  430.     that you can control via the restriction options (described above), and 
  431.     some that you cannot control. Because GetURL is supplied as source code 
  432.     it is asked that you do not remove the restraints described here, but 
  433.     accept them. The web is a global resource with no equivalent of the
  434.     police as of yet. So in order to leave it usable by other people you
  435.     must use self restraint.
  436.     
  437.     * Database queries
  438.         - any URL containing a question mark '?' is disallowed. This means
  439.         that GetURL will not make database queries or provide parameters
  440.         for CGI scripts. The reason being that the return from a query could,
  441.         and very often does contains URLs for further queries leading to an
  442.         infinite loop of queries. It is simpler to completely disallow any
  443.         URL containing a '?' than to distinguish reasonable URLs.
  444.  
  445.     * Site exclusion
  446.         - not implemented yet
  447.  
  448.     * Proxies
  449.         - by default GetURL tries to use a proxy if one is configured
  450.         This means that multiple fetches of the same page or fetching
  451.         pages that are commonly fetched by other users are optimised.
  452.  
  453.     * Delay
  454.         - by default GetURL waits 2 seconds between fetching files across
  455.         the network. This stops GetURL fetching lots of pages in a short
  456.         time making it's impact on the network negligable.
  457.         
  458.     * Non-optimal implementation
  459.         - GetURL could be implemented in a much more efficient fashion.
  460.         Both in terms of choice of compiler and choice of algorithm.
  461.         In future I would like to redesign GetURL and redevelop it in
  462.         C or a similar language, but at the moment the poor implementation
  463.         results in somewhat of a restriction.
  464.  
  465. More about Robots
  466. =================
  467.                                                           
  468.     The best thing to do if you need to know more about Robots is to read
  469.     the following page with Mosaic. 
  470.  
  471.         http://web.nexor.co.uk/mak/doc/robots/robots.html
  472.         
  473.  
  474. <A HREF="http://web.nexor.co.uk/mak/doc/robots/robots.html">World Wide Web Robots, Wanderers, and Spiders</A>
  475.  
  476. {========================================================================}
  477. {   Examples                                                             }
  478. {========================================================================}
  479.  
  480. ** Examples of use of this wonderful program :-) (please send me yours)
  481.  
  482. 1)  rx geturl -h
  483.     print help message
  484. 2)  rx geturl http://www.cs.latrobe.edu.au/~burton/ -output t:JamesBurton.html
  485.     get James' home page, save to file
  486. 3)  rx geturl http://info.cern.ch/ -recursive -host info.cern.ch -visited t:visited
  487.     fetch all pages on info.cern.ch reachable from http://info.cern.ch/, Keep a list
  488. 4)  rx geturl -directory uunews: -unvisited t:news-urls
  489.     search for URLs in all news articles, save to file, but don't visit them yet
  490. 5)  rx geturl -problem
  491.     make a suggestion, ask for help, send bug report
  492. 6)  rx geturl -NewVersion t:geturl.rexx
  493.     download most recent version of the script (not wise to put rexx:geturl.rexx)
  494. 7)  an ADOS script called 'continue'
  495. .key url
  496. .bra [
  497. .ket ]
  498. rx geturl [url] -visited tmp:geturl/visited -unvisited tmp:geturl/unvisited -recursive -saveroot tmp:geturl/cache -failed t:geturl/failed
  499. ;; call it every time you log on, and it will fetch a few more pages. Send it ctrl-c
  500. ;; to stop. Shouldn't repeat itself. add -retry to make it attempt to retry
  501. ;; URLs it couldn't get before (those in the failed file)
  502. 8) rx geturl http://www.cs.latrobe.edu.au/~burton/PigFace-small.gif
  503.     download my portrait - just that and nothing more
  504. 9) rx geturl -PatternMatching
  505.     download Match utility
  506. 10)rx geturl http://www.cs.latrobe.edu.au -r -path #?.(gif|jpg|xbm)
  507.     download picture files in my home page
  508.  
  509. {========================================================================}
  510. {   Match                                                                }
  511. {========================================================================}
  512.  
  513.     Match is a small utility I wrote in C and compiled with DICE v3.0
  514.     The purpose of Match is to make AmigaDOS pattern matching available
  515.     from within scripts. I couldn't find a simple way of making ARexx do
  516.     this by itself, but I found an incredibly simple way using C. GetURL
  517.     does not require Match, but is considerably more useful with Match.
  518.     
  519.     Match works as follows:
  520.  
  521.     Match <pattern> <string>
  522.     
  523.     e.g.
  524.     Match #? abcde
  525.     yes                                         
  526.     
  527.     Match #?.abc abcde
  528.     no
  529.     
  530.     Match #?.abc abcde.abc
  531.     yes
  532.     
  533.     Match prints either 'yes' or 'no' depending on whether the string matches
  534.     the pattern. Or in other language, if the pattern correctly described the 
  535.     string Match wil priny 'yes' otherwise 'no'.
  536.     
  537.     You can get hold of Match by using the following command line
  538.     
  539.     rx geturl -patternmatching          
  540.     
  541.     Match should be installed somewhere in your shell's search path. The simplest
  542.     way to do this is to copy match to your C: directory
  543.  
  544. {========================================================================}
  545. {   New Versions                                                         }
  546. {========================================================================}
  547.     
  548.     GetURL is still suffering from 'featuritis'. This means that every
  549.     day I think of 5 new problems that GetURL could solve if only it had
  550.     such and such an option. To make it worse, since I released GetURL onto
  551.     the network, other people have been suggesting things that I hadn't 
  552.     thought of. The point is that GetURL is updated regularly. So I made
  553.     GetURL able to download a new version of itself.
  554.     
  555.     If you use the command line
  556.     
  557.     rx geturl -newversion
  558.     
  559.     GetURL will attempt to download the latest version of itself. New versions
  560.     may appear as often as once a week, especially if bugs or problems are
  561.     found.
  562.     
  563.     Please mail me if you have any bugs, problems or suggestions. The easiest
  564.     way to do this is to use the command line
  565.     
  566.     rx geturl -problem
  567.  
  568. {========================================================================}
  569. {   Known Bugs & Problems                                                }
  570. {========================================================================}
  571.  
  572. ** Problems, ToDos, ideas, ... (please suggest more)
  573.  
  574. 1)  http://www.cs.latrobe.edu.au != http://www.cs.latrobe.edu.au/
  575.     these count as separate - should be recognised as the same
  576. 2)  warning if download an empty file
  577. 4)  check content-length: header (add a nice display)
  578. 5)  check content-type:
  579. 6)  FILE://localhost - should change local_prefix temporarily
  580. 7)  should delete temporary files
  581.     - including visited.tmp files
  582. 8)  when use -output the WHOLE file is searched every time a page is appended
  583. 9)  would be nice to spawn off HTTP processes
  584. 10) need better search engine (grep?) I tried c:search but it's no use
  585. 11) make it smaller (takes too long to compile)
  586. 12) implement missing protocols, FTP notably
  587. 13) implement -directory, -update
  588. 14) implement -date <date> (only downloads pages newer than date)
  589. 15) convince Mosaic developers to add ability to check Mosaic: cache
  590.     before downloading over the network
  591. 16) write HTTP cache server for AmiTCP (oh yeah sure!)
  592. 17) host/pathname aliases file
  593. 18) clean up an existing agenda file, removing things that are in the
  594.     prune-file and other matching URLs
  595. 19) CALL not used in function call where a value is returned
  596.  
  597. {========================================================================}
  598. {   Glossary                                                             }
  599. {========================================================================}
  600.  
  601. World-Wide Web (or WWW for short)
  602.     For many years computers around the world have been connected together
  603.     in what is known as the InterNet. This means that you can have real-time
  604.     as-you-speak access to somebody else's computer. The Web uses this facility
  605.     to access information on other people's computers (maybe in another country)
  606.     and to present this information to you. GetURL is a CLI or shell command
  607.     that allows you to browse the Web from your Amiga without human intervention.
  608.     i.e. automatically
  609.  
  610. URL (Universal Resource Locator - or web-address for medium)
  611.     This is quite a complex way of saying what file you want. I won't attempt
  612.     to describe it in full but here are a few examples. 
  613.     Note: GetURL probably won't understand all of these
  614.     
  615.     http://host[:port][/path]
  616.         describes a file accessable via the HTTP protocol
  617.     ftp://host[:port][/path]                             
  618.         describes a file accessable via the FTP protocol
  619.     telnet://host[:port]                                
  620.         describes a telnet login
  621.     gopher://host               
  622.         describes a file or directory accessable via Gopher
  623.     mailto:user@host                                    
  624.         describes an email address
  625.  
  626. Proxy
  627.     Because millions of people are now using the Web, the network is
  628.     suffering overload symptoms. Normally HTTP specifies that pages
  629.     are downloaded directly from the place in which they are stored,
  630.     but if you connect to a proxy server, than when you go to download
  631.     a page your client (maybe GetURL or AMosaic) will ask the proxy
  632.     host for the page. The proxy host either already has the file
  633.     in it's cache (in which case that saves loading it again across the network
  634.     to the proxy) or it goes and fetches it normally. Either way you end up
  635.     getting the file, and on the average quite a bit quicker.
  636.  
  637. AmiNet
  638.     A group of computers which each have a set of programs for Amiga computers.
  639.     Hundreds of thousands of Amiga users download files from AmiNet every day
  640.  
  641. Patterns
  642.     A way of describing something. Computer programs use patterns to decide
  643.     whether something is of interest
  644.     
  645.     from a shell try
  646.     
  647.     list #?.info
  648.     
  649.     This will list all the files in the current directory that match the
  650.     pattern '#?.info' See the AmigaDOS manual for more information.
  651.  
  652. Case Sensitive
  653.     The pertains to patterns. If a pattern is case sensitive then capital a
  654.     'A' will only match with another 'A' and not 'a'. If a pattern is not case
  655.     sensitive (or case insensitive) then capitals and lower-case are considered
  656.     the same letter, so 'A' matches with 'a'. Patterns in GetURL are 
  657.     case-insensitive because that's how the Match program works.
  658.  
  659. {========================================================================}
  660. {   Changes                                                              }
  661. {========================================================================}
  662.  
  663. History of changes
  664. version 0.9 : initial beta release 08-Jan-95
  665.  
  666. version 1.0 : 15-Jan-95
  667.     - fixed problem in header parsing - now stops at lines containing cr 09-Jan-95
  668.     - fixed problem with name of header_file being 'HEADER_FILE' sometimes 09-Jan-95
  669.     - fixed : initial URL always added to visited file without check 09-Jan-95
  670.     - now will still run -recursive if no initial URL 09-Jan-95
  671.     - added -saveroot 09-Jan-95     
  672.     - implemented FILE method to localhost 09-Jan-95
  673.     - added -number 10-Jan-95
  674.     - added -newversion 15-Jan-95
  675.     - added -failed 15-Jan-95
  676.     - added -retry 15-Jan-95
  677.     - added top of file data for HTML files only 15-Jan-95
  678.     - fixed -output 15-Jan-95
  679.     
  680. version 1.01 : 16-Jan-95
  681.     - fixed openlibrary problem 16-Jan-95 Brian Thompstone <brian@clrlight.demon.co.uk>
  682.     - fixed relative URLs problem 16-Jan-95 Brian Thompstone <brian@clrlight.demon.co.uk>
  683.     - fixed output file mode problem 16-Jan-95
  684.     
  685. version 1.02 : 26-Jan-95 (Australia Day)
  686.     - added X-Mailer header 16-Jan-95
  687.     - added AmigaDOS regexp in -host, -path 16-Jan-95
  688.     - added Match downloader 17-Jan-95
  689.     - fixed HREF & SRC missed because capitals 19-Jan-95
  690.     - fixed mailto: ending up as a relative 19-Jan-95
  691.     - wrote GetURL.doc properly 22-Jan-95
  692.     - added GetURL.doc to -NewVersion 22-Jan-95
  693.     - changed global vars to gv.* style 26-Jan-95
  694.     - added -LENGTH (thanks again Brian) 26-Jan-95
  695.     - added -SaveHeaders (thanks again Brian) 26-Jan-95
  696.     - added -IfModified 26-Jan-95
  697.     - changed problem address back to Latcs1 26-Jan-95
  698.     - added associative 26-Jan-95
  699.     - added skip of the top of HTML files so that you don't always
  700.         end up searching my home page :-) 26-Jan-95
  701.         
  702. version 1.03 : 01-Feb-95
  703.     - added -DELAY 29-Jan-95
  704.     - now refuses to work on any URLs containing a '?' 29-Jan-95
  705.     - only SRC & HREF links accepted (was accepting NAME) 29-Jan-95
  706.     - added configuration for TimeZone 29-Jan-95
  707.     - Finally, items are only added to agenda if not already there 29-Jan-95
  708.         - same for pruned, failed
  709.     - fixed a few problems with -DEPTH and implemented it for 
  710.         non-array agenda 30-Jan-95
  711.     - added robot section to documentation 31-Jan-95
  712.     
  713. {========================================================================}
  714. {   Credits                                                              }
  715. {========================================================================}
  716.  
  717. GetURL.rexx was originally written by James Burton after a discussion with
  718. Michael Witbrock of AMosaic fame. GetURL is public domain. Thanks to Brian
  719. Thompstone for 
  720.     (i)     actually using it
  721.     (ii)    actually telling me what was wrong with it
  722.     (iii)   writing some fixes and additions
  723.     (iv)    enthusiasm
  724.     
  725. James Burton <burton@cs.latrobe.edu.au>
  726. Brian Thompstone <brian@clrlight.demon.co.uk>
  727. Michael J. Witbrock <mjw@PORSCHE.BOLTZ.CS.CMU.EDU>
  728.  
  729. {========================================================================}
  730. {   Contact                                                              }
  731. {========================================================================}
  732.  
  733.     James Burton
  734.     
  735.     c/o 
  736.     Department of Computer Science & Computer Engineering
  737.     Latrobe University
  738.     Bundoora, Victoria, 3083
  739.     Australia
  740.  
  741.     EMail:  burton@cs.latrobe.edu.au
  742.     Web:    http://www.cs.latrobe.edu.au/~burton/
  743.  
  744. {========================================================================}
  745. {   End of File 'GetURL.doc'                                             }
  746. {========================================================================}
  747.